package com.briup.day11;

import com.briup.day09.A;

/**
 * @author lining
 * @date 2024/1/22 10:04
 */
public class TestAutomobile {
    public static void main(String[] args) {
        //一个父类的引用指向任意一个子类对象
        Automobile a = new Truck("北汽", "苏U12345", "中型");
        a = new Bus("宇通", "苏A11111", 30);
    }
}
//父类  封装
abstract class Automobile{
    //定义公共的属性和方法
    private String brand;//品牌
    private String plateNumber;//车牌号

    /**
     * 计算租金:因为一个车辆如果没有具体型号，就没有具体的价格。无法计算租金
     * 抽象方法必须抽象类中，所有车辆类就被设计为抽象类
     * @return
     */
    public abstract double getRent();

    public Automobile() {

    }

    public Automobile(String brand, String plateNumber) {
        this.brand = brand;
        this.plateNumber = plateNumber;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public String getPlateNumber() {
        return plateNumber;
    }

    public void setPlateNumber(String plateNumber) {
        this.plateNumber = plateNumber;
    }
}

//子类
class Truck extends Automobile{
    private String type;

    public Truck(String brand,String plateNumber, String type) {
        //对继承到父类中的属性进行赋值：3种
//        super.brand = brand;  权限限制不可以。
//        super.setBrand(brand);
//        super.setPlateNumber(plateNumber);可以，不方便
        super(brand,plateNumber);//注意：代码第一行
        this.type = type;
    }

    @Override
    public double getRent() {
        return 0;
    }
}
class Bus extends Automobile {
    private int num;

    public Bus(String brand,String plateNumber, int num) {
        super(brand,plateNumber);
        this.num = num;
    }
    @Override
    public double getRent() {
        return 0;
    }
}